
#include "gd32f4xx_gpio.h"              // GigaDevice::Device:StdPeripherals:GPIO
#include "kgl_comu.h"
#include "pindefine.h"


void KGL_GPIO_Config(void){
	KGL_GPIO_in_Config();
	KGL_GPIO_out_Config();
}

/**
 配置所有的输出端口
*/
void KGL_GPIO_out_Config(void){
	
	/*GPIOA*/
	gpio_mode_set(GPIOA,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		EN_PV8_GPU_GPIO_PIN);
	gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		EN_PV8_GPU_GPIO_PIN);
	
	gpio_bit_reset(GPIOA, EN_PV8_GPU_GPIO_PIN);
	/*GPIOB*/
	gpio_mode_set(GPIOB,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_VDD_1V1_7A_GPIO_PIN|
																			EN_P1V2_HT_7A_GPIO_PIN|
																			EN_P1V1SB_GPIO_PIN));
	gpio_output_options_set(GPIOB,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(EN_VDD_1V1_7A_GPIO_PIN|
																			EN_P1V2_HT_7A_GPIO_PIN|
																			EN_P1V1SB_GPIO_PIN));
	
	gpio_bit_reset(GPIOB,(EN_VDD_1V1_7A_GPIO_PIN|
																			EN_P1V2_HT_7A_GPIO_PIN|
																			EN_P1V1SB_GPIO_PIN));
	
	/*GPIOC*/
	gpio_mode_set(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_LS7A_PLL_GPIO_PIN|
																			EN_P1V8_HT_7A_GPIO_PIN|
																			EN_P5V_GPIO_PIN|
																			WORKING_STATUS_GPIO_PIN));
	gpio_output_options_set(GPIOC,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(EN_LS7A_PLL_GPIO_PIN|
																			EN_P1V8_HT_7A_GPIO_PIN|
																			EN_P5V_GPIO_PIN|
																			WORKING_STATUS_GPIO_PIN));
																			
	gpio_bit_reset(GPIOC,												(EN_LS7A_PLL_GPIO_PIN|
																			EN_P1V8_HT_7A_GPIO_PIN|
																			EN_P5V_GPIO_PIN|
																			WORKING_STATUS_GPIO_PIN));
	

	/*GPIOD*/
	gpio_mode_set(GPIOD,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_P3V3_GPIO_PIN|
																			EN_P1V2_PLL_3A_GPIO_PIN|
																			EN_P1V0_FPGA_GPIO_PIN|
																			EN_P1V2_FPGA_GPIO_PIN|
																			EN_P3V3_IO_3A_GPIO_PIN
																			));	

	gpio_mode_set(GPIOD,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,
																		(	LS3A_RTC_REMRSTN_GPIO_PIN|
																			LS7A_RTC_RSTN_GPIO_PIN|
																			RESET_DVI_GPIO_PIN
																			));	



/*  gpio_mode_set(GPIOD,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_P3V3_GPIO_PIN|
																			EN_P1V2_PLL_3A_GPIO_PIN|
																			EN_P1V0_FPGA_GPIO_PIN|
																			EN_P1V2_FPGA_GPIO_PIN|
																			EN_P3V3_IO_3A_GPIO_PIN|
																			LS3A_RTC_REMRSTN_GPIO_PIN|
																			LS7A_RTC_RSTN_GPIO_PIN|
																			RESET_DVI_GPIO_PIN));
*/
	gpio_output_options_set(GPIOD,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(EN_P3V3_GPIO_PIN|
																			EN_P1V2_PLL_3A_GPIO_PIN|
																			EN_P1V0_FPGA_GPIO_PIN|
																			EN_P1V2_FPGA_GPIO_PIN|
																			EN_P3V3_IO_3A_GPIO_PIN|
																			LS3A_RTC_REMRSTN_GPIO_PIN|
																			LS7A_RTC_RSTN_GPIO_PIN|
																			RESET_DVI_GPIO_PIN));
																			
	gpio_bit_reset(GPIOD,(EN_P3V3_GPIO_PIN|
																			EN_P1V2_PLL_3A_GPIO_PIN|
																			EN_P1V0_FPGA_GPIO_PIN|
																			EN_P1V2_FPGA_GPIO_PIN|
																			EN_P3V3_IO_3A_GPIO_PIN|
																			LS3A_RTC_REMRSTN_GPIO_PIN|
																			LS7A_RTC_RSTN_GPIO_PIN|
																			RESET_DVI_GPIO_PIN));

	/*GPIOE*/
	gpio_mode_set(GPIOE,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_P3V3_IO_7A_GPIO_PIN));
	gpio_output_options_set(GPIOE,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(EN_P3V3_IO_7A_GPIO_PIN));
	
	gpio_bit_reset(GPIOE, 												(EN_P3V3_IO_7A_GPIO_PIN));
	
	/*GPIOF*/
	gpio_mode_set(GPIOF,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(EN_P1V8_PLL_3A_GPIO_PIN|
																		 SYSRESET_OUT_N_GPIO_PIN));
	gpio_output_options_set(GPIOF,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(EN_P1V8_PLL_3A_GPIO_PIN|
																		 SYSRESET_OUT_N_GPIO_PIN));
																		 
	gpio_bit_reset(GPIOF, (EN_P1V8_PLL_3A_GPIO_PIN|
																		 SYSRESET_OUT_N_GPIO_PIN));
																		 
	/*GPIOG*/
	gpio_mode_set(GPIOG,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,
																		(CPU_PWR_GOOD_GPIO_PIN|
																		 SATA_RST_GPIO_PIN|
																		 BMC_RESET_GPIO_PIN|
																		 LS7A_ACPI_PWRBTNN_GPIO_PIN|
																		 _7A_PWR_GOOD_GPIO_PIN|
																		 EN_P1V15_CORE_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_3A_GPIO_PIN|
																		 EN_P1V8_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_7A_GPIO_PIN|
																		 RST_FPGA_GPIO_PIN));
																		 
																		 
	gpio_mode_set(GPIOG,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLDOWN,
																		(
																		 SATA_RST_GPIO_PIN
																		 ));																		 

	gpio_output_options_set(GPIOG,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,
																		(CPU_PWR_GOOD_GPIO_PIN|
																		 SATA_RST_GPIO_PIN|
																		 BMC_RESET_GPIO_PIN|
																		 LS7A_ACPI_PWRBTNN_GPIO_PIN|
																		 _7A_PWR_GOOD_GPIO_PIN|
																		 EN_P1V15_CORE_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_3A_GPIO_PIN|
																		 EN_P1V8_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_7A_GPIO_PIN|
																		 RST_FPGA_GPIO_PIN));
																		 
	gpio_bit_reset(GPIOG, (CPU_PWR_GOOD_GPIO_PIN|
																		 SATA_RST_GPIO_PIN|
																		 BMC_RESET_GPIO_PIN|
																		 LS7A_ACPI_PWRBTNN_GPIO_PIN|
																		 _7A_PWR_GOOD_GPIO_PIN|
																		 EN_P1V15_CORE_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_3A_GPIO_PIN|
																		 EN_P1V8_3A_GPIO_PIN|
																		 EN_P1V5_VDDQ_7A_GPIO_PIN|
																		 RST_FPGA_GPIO_PIN));
	
}

void KGL_GPIO_in_Config(void){
	/*GPIOA*/
	gpio_mode_set(GPIOA, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(PG_P3V3_IO_3A_GPIO_PIN|
																			PG_GNET_P1V05_GPIO_PIN|
																			PG_GENT_P1V9_GPIO_PIN));
	
	/*GPIOB*/
	gpio_mode_set(GPIOB, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(PG_VDD_1V1_7A_GPIO_PIN|
																			FPGA_INIT_N_GPIO_PIN|
																			PG_P1V2_HT_7A_GPIO_PIN));
	
	/*GPIOC*/
	gpio_mode_set(GPIOC, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(STBY_P1V1SB_GPIO_PIN|
																			PG_LS7A_PLL_HT_VDD_GPIO_PIN|
																			PG_P1V8_HT_7A_GPIO_PIN|
																			PG_P5V_GPIO_PIN));
	
	/*GPIOD*/
	gpio_mode_set(GPIOD, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(PG_P3V3_GPIO_PIN|
																		PG_P1V0_FPGA_GPIO_PIN|
																		PG_P1V2_FPGA_GPIO_PIN|
																		P3V3_IO_3A_GPIO_PIN|
																			SYS_CON_N_GPIO_PIN|
																			PG_P1V2_PLL_3A_GPIO_PIN));
																			
	/*GPIOE*/
	gpio_mode_set(GPIOE, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(PG_P1V8_FPGA_GPIO_PIN|
																		PG_P3V3_FPGA_GPIO_PIN|
																		FPGA_DONE_GPIO_PIN|
																			PG_P3V3_IO_7A_GPIO_PIN|
																			CPU_GA0_N_GPIO_PIN|
																			CPU_GA1_N_GPIO_PIN|
																			CPU_GA2_N_GPIO_PIN|
																			CPU_GA3_N_GPIO_PIN|
																			CPU_GA4_N_GPIO_PIN|
																			CPU_GAP_N_GPIO_PIN));
																			
	/*GPIOE 板卡号位采集使用上拉电阻输入*/
	gpio_mode_set(GPIOE, GPIO_MODE_INPUT,GPIO_PUPD_PULLUP,
																			(CPU_GA0_N_GPIO_PIN|
																			CPU_GA1_N_GPIO_PIN|
																			CPU_GA2_N_GPIO_PIN|
																			CPU_GA3_N_GPIO_PIN|
																			CPU_GA4_N_GPIO_PIN|
																			CPU_GAP_N_GPIO_PIN));
	
	
	
	/*GPIOF*/
	gpio_mode_set(GPIOE, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(PG_P1V8_PLL_3A_GPIO_PIN|
																			NWRESET_WDREQ_GPIO_PIN|
																			SYSRESET_IN_N_GPIO_PIN));
																			
	/*GPIOG*/
	gpio_mode_set(GPIOG, GPIO_MODE_INPUT,GPIO_PUPD_NONE,
																		(LS7A_LPC_RST_GPIO_PIN|
																			LS7A_SYS_RESET_GPIO_PIN|
																			PG_P1V15_CORE_3A_GPIO_PIN|
																			PG_P1V5_VDDQ_3A_GPIO_PIN|
																			PG_P1V8_3A_GPIO_PIN|
																			PG_P1V5_VDDQ_7A_GPIO_PIN));
}
